]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extension-tool: Fix falling back to GSettings
authorFlorian Müllner <fmuellner@gnome.org>
Tue, 22 Nov 2022 18:40:37 +0000 (19:40 +0100)
committerMarge Bot <marge-bot@gnome.org>
Fri, 3 Feb 2023 17:23:42 +0000 (17:23 +0000)
When we switched the tool to the public Extensions service, the
fallback to GSettings broke in the case GNOME is installed but
not running (because the service can be autostarted, albeit it'll
fail later).

Fix this by also falling back when we don't get a response from
gnome-shell.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6127

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2552>

subprojects/extensions-tool/src/command-disable.c
subprojects/extensions-tool/src/command-enable.c

index 93c316bf7864baa0b3af8151f35171e1f51c2dd5..bae11b25654fcc834c1679fc51dbf96e157066f9 100644 (file)
 #include "common.h"
 #include "config.h"
 
+static gboolean
+disable_extension_gsettings (const char *uuid)
+{
+  g_autoptr(GSettings) settings = get_shell_settings ();
+
+  if (settings == NULL)
+    return FALSE;
+
+  return settings_list_remove (settings, "enabled-extensions", uuid) &&
+         settings_list_add (settings, "disabled-extensions", uuid);
+}
+
 static gboolean
 disable_extension_dbus (GDBusProxy *proxy,
                         const char *uuid)
@@ -42,10 +54,7 @@ disable_extension_dbus (GDBusProxy *proxy,
                                      &error);
 
   if (response == NULL)
-    {
-      g_printerr (_("Failed to connect to GNOME Shell\n"));
-      return FALSE;
-    }
+      return disable_extension_gsettings (uuid);
 
   g_variant_get (response, "(b)", &success);
 
@@ -55,18 +64,6 @@ disable_extension_dbus (GDBusProxy *proxy,
   return success;
 }
 
-static gboolean
-disable_extension_gsettings (const char *uuid)
-{
-  g_autoptr(GSettings) settings = get_shell_settings ();
-
-  if (settings == NULL)
-    return FALSE;
-
-  return settings_list_remove (settings, "enabled-extensions", uuid) &&
-         settings_list_add (settings, "disabled-extensions", uuid);
-}
-
 static gboolean
 disable_extension (const char *uuid)
 {
index 6ae3a83513e434dd01a7b30b14e8f5864118d244..712de4a3dba8c8328ee8141d5f8a43f2e2a8a7ef 100644 (file)
 #include "common.h"
 #include "config.h"
 
+static gboolean
+enable_extension_gsettings (const char *uuid)
+{
+  g_autoptr(GSettings) settings = get_shell_settings ();
+
+  if (settings == NULL)
+    return FALSE;
+
+  return settings_list_add (settings, "enabled-extensions", uuid) &&
+         settings_list_remove (settings, "disabled-extensions", uuid);
+}
+
 static gboolean
 enable_extension_dbus (GDBusProxy *proxy,
                        const char *uuid)
@@ -42,10 +54,7 @@ enable_extension_dbus (GDBusProxy *proxy,
                                      &error);
 
   if (response == NULL)
-    {
-      g_printerr (_("Failed to connect to GNOME Shell\n"));
-      return FALSE;
-    }
+    return enable_extension_gsettings (uuid);
 
   g_variant_get (response, "(b)", &success);
 
@@ -55,18 +64,6 @@ enable_extension_dbus (GDBusProxy *proxy,
   return success;
 }
 
-static gboolean
-enable_extension_gsettings (const char *uuid)
-{
-  g_autoptr(GSettings) settings = get_shell_settings ();
-
-  if (settings == NULL)
-    return FALSE;
-
-  return settings_list_add (settings, "enabled-extensions", uuid) &&
-         settings_list_remove (settings, "disabled-extensions", uuid);
-}
-
 static gboolean
 enable_extension (const char *uuid)
 {